gtk-builder-tool: Replace can-focus with focusable
authorMatthias Clasen <mclasen@redhat.com>
Sat, 5 Jun 2021 21:56:35 +0000 (17:56 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 5 Jun 2021 21:56:35 +0000 (17:56 -0400)
The focusable property has the meaning that can-focus had
in GTK 3.

Update tests, and mention this in the migration guide.

Fixes: #3638
docs/reference/gtk/migrating-3to4.md
testsuite/tools/simplify-data-3to4/box.expected
testsuite/tools/simplify-data-3to4/grid.expected
tools/gtk-builder-tool-simplify.c

index 52b22fd847f56dbd5c9ef42c9f87bff8a2dab02c..9bc982962ae71e3a95a2c05ea80435c7b8d5e9c4 100644 (file)
@@ -604,6 +604,9 @@ from `FALSE` to `TRUE`. In addition, there is a [property@Gtk.Widget:focusable]
 property, which controls whether an individual widget can receive
 the input focus.
 
+The `gtk4-builder-tool` utility, when called with the `--3to4` option of the
+`simplify` command, will replace `:can-focus` by `:focusable`.
+
 The feature to automatically keep the focus widget scrolled into view with
 `gtk_container_set_focus_vadjustment()` has been removed together with
 `GtkContainer`, and is provided by scrollable widgets instead. In the common
index 3d452aca8b630b7107f4ec6d5b973a0c16dc0624..29c80079b0c4366c5d6706f27110183fa38aedf7 100644 (file)
@@ -4,15 +4,12 @@
   <object class="GtkWindow">
     <property name="child">
       <object class="GtkBox">
-        <property name="can_focus">0</property>
         <child>
           <object class="GtkBox">
             <property name="hexpand">1</property>
-            <property name="can_focus">0</property>
             <property name="orientation">vertical</property>
             <child>
               <object class="GtkBox">
-                <property name="can_focus">0</property>
                 <property name="valign">center</property>
                 <property name="hexpand">1</property>
                 <property name="vexpand">0</property>
                   <object class="GtkButton">
                     <property name="halign">center</property>
                     <property name="label" translatable="yes">_</property>
+                    <property name="focusable">1</property>
                     <property name="receives_default">1</property>
                   </object>
                 </child>
                 <child>
                   <object class="GtkButton">
                     <property name="label" translatable="yes">F</property>
+                    <property name="focusable">1</property>
                     <property name="receives_default">1</property>
                   </object>
                 </child>
@@ -34,6 +33,7 @@
                     <property name="halign">center</property>
                     <property name="hexpand">1</property>
                     <property name="label" translatable="yes">E</property>
+                    <property name="focusable">1</property>
                     <property name="receives_default">1</property>
                   </object>
                 </child>
@@ -41,6 +41,7 @@
                   <object class="GtkButton">
                     <property name="hexpand">1</property>
                     <property name="label" translatable="yes">FE</property>
+                    <property name="focusable">1</property>
                     <property name="receives_default">1</property>
                   </object>
                 </child>
                   <object class="GtkButton">
                     <property name="halign">center</property>
                     <property name="label" translatable="yes">_</property>
+                    <property name="focusable">1</property>
                     <property name="receives_default">1</property>
                   </object>
                 </child>
                 <child>
                   <object class="GtkButton">
                     <property name="label" translatable="yes">F</property>
+                    <property name="focusable">1</property>
                     <property name="receives_default">1</property>
                   </object>
                 </child>
@@ -70,6 +73,7 @@
                     <property name="halign">center</property>
                     <property name="hexpand">1</property>
                     <property name="label" translatable="yes">E</property>
+                    <property name="focusable">1</property>
                     <property name="receives_default">1</property>
                   </object>
                 </child>
@@ -77,6 +81,7 @@
                   <object class="GtkButton">
                     <property name="hexpand">1</property>
                     <property name="label" translatable="yes">FE</property>
+                    <property name="focusable">1</property>
                     <property name="receives_default">1</property>
                   </object>
                 </child>
               <object class="GtkButton">
                 <property name="valign">center</property>
                 <property name="label" translatable="yes">_</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
               </object>
             </child>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">F</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
               </object>
             </child>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
                 <property name="label" translatable="yes">E</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
               </object>
             </child>
               <object class="GtkButton">
                 <property name="vexpand">1</property>
                 <property name="label" translatable="yes">FE</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
               </object>
             </child>
         </child>
         <child>
           <object class="GtkBox">
-            <property name="can_focus">0</property>
             <property name="hexpand">0</property>
             <property name="vexpand">1</property>
             <property name="orientation">vertical</property>
               <object class="GtkButton">
                 <property name="valign">center</property>
                 <property name="label" translatable="yes">_I</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
               </object>
             </child>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FI</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
               </object>
             </child>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
                 <property name="label" translatable="yes">EI</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
               </object>
             </child>
               <object class="GtkButton">
                 <property name="vexpand">1</property>
                 <property name="label" translatable="yes">FEI</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
               </object>
             </child>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">_S</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
               </object>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FS</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">start</property>
               </object>
               <object class="GtkButton">
                 <property name="vexpand">1</property>
                 <property name="label" translatable="yes">ES</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
               </object>
               <object class="GtkButton">
                 <property name="vexpand">1</property>
                 <property name="label" translatable="yes">FES</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">start</property>
               </object>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">_N</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
               </object>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FN</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">end</property>
               </object>
               <object class="GtkButton">
                 <property name="vexpand">1</property>
                 <property name="label" translatable="yes">EN</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
               </object>
               <object class="GtkButton">
                 <property name="vexpand">1</property>
                 <property name="label" translatable="yes">FEN</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">end</property>
               </object>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">_C</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
               </object>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FC</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
               </object>
               <object class="GtkButton">
                 <property name="vexpand">1</property>
                 <property name="label" translatable="yes">EC</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
               </object>
               <object class="GtkButton">
                 <property name="vexpand">1</property>
                 <property name="label" translatable="yes">FEC</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
               </object>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">_B</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
               </object>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FB</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">baseline</property>
               </object>
               <object class="GtkButton">
                 <property name="vexpand">1</property>
                 <property name="label" translatable="yes">EB</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
               </object>
               <object class="GtkButton">
                 <property name="vexpand">1</property>
                 <property name="label" translatable="yes">FEB</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">baseline</property>
               </object>
         </child>
         <child>
           <object class="GtkBox">
-            <property name="can_focus">0</property>
             <property name="hexpand">0</property>
             <property name="vexpand">1</property>
             <property name="orientation">vertical</property>
               <object class="GtkButton">
                 <property name="valign">center</property>
                 <property name="label" translatable="yes">_I</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="vexpand">0</property>
               </object>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FI</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="vexpand">0</property>
               </object>
               <object class="GtkButton">
                 <property name="valign">center</property>
                 <property name="label" translatable="yes">EI</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="vexpand">1</property>
               </object>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FEI</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="vexpand">1</property>
               </object>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">_S</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">0</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FS</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">start</property>
                 <property name="vexpand">0</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">ES</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FES</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">start</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">_N</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">0</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FN</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">end</property>
                 <property name="vexpand">0</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">EN</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FEN</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">end</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">_C</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">0</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FC</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">0</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">EC</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FEC</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">_B</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">0</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FB</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">baseline</property>
                 <property name="vexpand">0</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">EB</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FEB</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">baseline</property>
                 <property name="vexpand">1</property>
         </child>
         <child>
           <object class="GtkBox">
-            <property name="can_focus">0</property>
             <property name="hexpand">0</property>
             <property name="vexpand">1</property>
             <property name="orientation">vertical</property>
               <object class="GtkButton">
                 <property name="valign">center</property>
                 <property name="label" translatable="yes">_I</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="vexpand">1</property>
               </object>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FI</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="vexpand">1</property>
               </object>
               <object class="GtkButton">
                 <property name="valign">center</property>
                 <property name="label" translatable="yes">EI</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="vexpand">1</property>
               </object>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FEI</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="vexpand">1</property>
               </object>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">_S</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FS</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">start</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">ES</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FES</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">start</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">_N</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FN</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">end</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">EN</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FEN</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">end</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">_C</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FC</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">EC</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FEC</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">_B</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FB</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">baseline</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">EB</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">center</property>
                 <property name="vexpand">1</property>
             <child>
               <object class="GtkButton">
                 <property name="label" translatable="yes">FEB</property>
+                <property name="focusable">1</property>
                 <property name="receives_default">1</property>
                 <property name="valign">baseline</property>
                 <property name="vexpand">1</property>
index b2f4f733aa40d213def030bbfc381d80d30f7724..deeb8b9c59a9657e27788a0a27992ff0cc434c66 100644 (file)
@@ -67,6 +67,7 @@
         <child>
           <object class="GtkSwitch" id="button5">
             <property name="active">1</property>
+            <property name="focusable">1</property>
             <property name="receives_default">1</property>
             <layout>
               <property name="column">4</property>
@@ -76,6 +77,7 @@
         </child>
         <child>
           <object class="GtkSwitch" id="button6">
+            <property name="focusable">1</property>
             <property name="receives_default">1</property>
             <layout>
               <property name="column">5</property>
@@ -85,6 +87,7 @@
         </child>
         <child>
           <object class="GtkButton" id="button7">
+            <property name="focusable">1</property>
             <property name="receives_default">1</property>
             <property name="label">Text Button</property>
             <layout>
@@ -95,6 +98,7 @@
         </child>
         <child>
           <object class="GtkButton" id="button8">
+            <property name="focusable">1</property>
             <property name="receives_default">1</property>
             <property name="halign">center</property>
             <property name="valign">center</property>
         </child>
         <child>
           <object class="GtkButton" id="button9">
+            <property name="focusable">1</property>
             <property name="receives_default">1</property>
             <property name="halign">center</property>
             <property name="valign">center</property>
index 66c306013830ad64cea13fa9e6623ea471210a21..ff1f72a482b1536d656447cbdbe3f548e958986a 100644 (file)
@@ -721,6 +721,7 @@ maybe_rename_property (Element *element, MyParserData *data)
     { "GtkHeaderBar", "custom-title", GTK_TYPE_HEADER_BAR, PROP_KIND_OBJECT, "title-widget", { NULL, NULL, NULL } },
     { "GtkStack", "homogeneous", GTK_TYPE_STACK, PROP_KIND_OBJECT, "hhomogeneous", { "vhomogeneous", NULL, NULL } },
     { "GtkImage", "pixbuf", GTK_TYPE_IMAGE, PROP_KIND_OBJECT, "file", { NULL, NULL, NULL } },
+    { "GtkWidget", "can-focus", GTK_TYPE_WIDGET, PROP_KIND_OBJECT, "focusable", { NULL, NULL, NULL } },
   };
   int i, k, l;
   PropKind kind;